/* Global style rules */

/* Root and body styles */
html {
    font-size: var(--bs-root-font-size, 16px);
}

body {
    font-family: var(--bs-body-font-family, system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", "Liberation Sans", Arial, sans-serif);
    font-size: var(--bs-body-font-size, 1rem);
    line-height: var(--bs-body-line-height, 1.5);
    color: var(--bs-body-color);
    background-color: var(--bs-body-bg);
}

/* Link styles */
a {
    color: var(--bs-link-color);
    text-decoration: var(--bs-link-decoration, underline);
}

a:hover {
    color: var(--bs-link-hover-color);
}

/* Link role styles */
.link-primary {
    color: var(--bs-primary) !important;
    text-decoration-color: var(--bs-primary) !important;
}
.link-primary:hover {
    color: rgba(var(--bs-primary-rgb), 0.8) !important;
    text-decoration-color: rgba(var(--bs-primary-rgb), 0.8) !important;
}

.link-secondary {
    color: var(--bs-secondary) !important;
    text-decoration-color: var(--bs-secondary) !important;
}
.link-secondary:hover {
    color: rgba(var(--bs-secondary-rgb), 0.8) !important;
    text-decoration-color: rgba(var(--bs-secondary-rgb), 0.8) !important;
}

.link-success {
    color: var(--bs-success) !important;
    text-decoration-color: var(--bs-success) !important;
}
.link-success:hover {
    color: rgba(var(--bs-success-rgb), 0.8) !important;
    text-decoration-color: rgba(var(--bs-success-rgb), 0.8) !important;
}

.link-info {
    color: var(--bs-info) !important;
    text-decoration-color: var(--bs-info) !important;
}
.link-info:hover {
    color: rgba(var(--bs-info-rgb), 0.8) !important;
    text-decoration-color: rgba(var(--bs-info-rgb), 0.8) !important;
}

.link-warning {
    color: var(--bs-warning) !important;
    text-decoration-color: var(--bs-warning) !important;
}
.link-warning:hover {
    color: rgba(var(--bs-warning-rgb), 0.8) !important;
    text-decoration-color: rgba(var(--bs-warning-rgb), 0.8) !important;
}

.link-danger {
    color: var(--bs-danger) !important;
    text-decoration-color: var(--bs-danger) !important;
}
.link-danger:hover {
    color: rgba(var(--bs-danger-rgb), 0.8) !important;
    text-decoration-color: rgba(var(--bs-danger-rgb), 0.8) !important;
}

.link-light {
    color: var(--bs-light) !important;
    text-decoration-color: var(--bs-light) !important;
}
.link-light:hover {
    color: rgba(var(--bs-light-rgb), 0.8) !important;
    text-decoration-color: rgba(var(--bs-light-rgb), 0.8) !important;
}

.link-dark {
    color: var(--bs-dark) !important;
    text-decoration-color: var(--bs-dark) !important;
}
.link-dark:hover {
    color: rgba(var(--bs-dark-rgb), 0.8) !important;
    text-decoration-color: rgba(var(--bs-dark-rgb), 0.8) !important;
}

/* Alert styles */
.alert-primary {
    color: var(--bs-primary-text-emphasis);
    background-color: var(--bs-primary-bg-subtle);
    border-color: var(--bs-primary-border-subtle);
}

.alert-secondary {
    color: var(--bs-secondary-text-emphasis);
    background-color: var(--bs-secondary-bg-subtle);
    border-color: var(--bs-secondary-border-subtle);
}

.alert-success {
    color: var(--bs-success-text-emphasis);
    background-color: var(--bs-success-bg-subtle);
    border-color: var(--bs-success-border-subtle);
}

.alert-info {
    color: var(--bs-info-text-emphasis);
    background-color: var(--bs-info-bg-subtle);
    border-color: var(--bs-info-border-subtle);
}

.alert-warning {
    color: var(--bs-warning-text-emphasis);
    background-color: var(--bs-warning-bg-subtle);
    border-color: var(--bs-warning-border-subtle);
}

.alert-danger {
    color: var(--bs-danger-text-emphasis);
    background-color: var(--bs-danger-bg-subtle);
    border-color: var(--bs-danger-border-subtle);
}

.alert-light {
    color: var(--bs-light-text-emphasis);
    background-color: var(--bs-light-bg-subtle);
    border-color: var(--bs-light-border-subtle);
}

.alert-dark {
    color: var(--bs-dark-text-emphasis);
    background-color: var(--bs-dark-bg-subtle);
    border-color: var(--bs-dark-border-subtle);
}

/* Subtle backgrounds */
.bg-primary-subtle {
    background-color: rgba(var(--bs-primary-rgb), 0.15) !important;
}

.bg-secondary-subtle {
    background-color: rgba(var(--bs-secondary-rgb), 0.15) !important;
}

.bg-success-subtle {
    background-color: rgba(var(--bs-success-rgb), 0.15) !important;
}

.bg-info-subtle {
    background-color: rgba(var(--bs-info-rgb), 0.15) !important;
}

.bg-warning-subtle {
    background-color: rgba(var(--bs-warning-rgb), 0.15) !important;
}

.bg-danger-subtle {
    background-color: rgba(var(--bs-danger-rgb), 0.15) !important;
}

.bg-light-subtle {
    background-color: rgba(var(--bs-light-rgb), 0.15) !important;
}

.bg-dark-subtle {
    background-color: rgba(var(--bs-dark-rgb), 0.15) !important;
}

/* Card with solid background */
.text-bg-primary {
    color: #fff;
    background-color: var(--bs-primary) !important;
}

.text-bg-secondary {
    color: #fff;
    background-color: var(--bs-secondary) !important;
}

.text-bg-success {
    color: #fff;
    background-color: var(--bs-success) !important;
}

.text-bg-info {
    color: #000;
    background-color: var(--bs-info) !important;
}

.text-bg-warning {
    color: #000;
    background-color: var(--bs-warning) !important;
}

.text-bg-danger {
    color: #fff;
    background-color: var(--bs-danger) !important;
}

.text-bg-light {
    color: #000;
    background-color: var(--bs-light) !important;
}

.text-bg-dark {
    color: #fff;
    background-color: var(--bs-dark) !important;
}

/* Card with colored border */
.border-primary {
    border-color: var(--bs-primary) !important;
}

.border-secondary {
    border-color: var(--bs-secondary) !important;
}

.border-success {
    border-color: var(--bs-success) !important;
}

.border-info {
    border-color: var(--bs-info) !important;
}

.border-warning {
    border-color: var(--bs-warning) !important;
}

.border-danger {
    border-color: var(--bs-danger) !important;
}

.border-light {
    border-color: var(--bs-light) !important;
}

.border-dark {
    border-color: var(--bs-dark) !important;
}

/* Paragraph margin */
p {
    margin-top: 0;
    margin-bottom: var(--bs-paragraph-margin-bottom, 1rem);
}

/* Heading styles */
h1, h2, h3, h4, h5, h6 {
    font-family: var(--bs-headings-font-family, inherit);
    margin-bottom: var(--bs-headings-margin-bottom, 0.5rem);
    font-weight: var(--bs-headings-font-weight, 500);
    line-height: var(--bs-headings-line-height, 1.2);
    color: var(--bs-heading-color, inherit);
}

/* Individual heading sizes */
h1 { font-size: var(--bs-h1-font-size, 2.5rem); }
h2 { font-size: var(--bs-h2-font-size, 2rem); }
h3 { font-size: var(--bs-h3-font-size, 1.75rem); }
h4 { font-size: var(--bs-h4-font-size, 1.5rem); }
h5 { font-size: var(--bs-h5-font-size, 1.25rem); }
h6 { font-size: var(--bs-h6-font-size, 1rem); }

/* Font weights */
.fw-lighter { font-weight: var(--bs-font-weight-lighter, 200); }
.fw-light { font-weight: var(--bs-font-weight-light, 300); }
.fw-normal { font-weight: var(--bs-font-weight-normal, 400); }
.fw-bold { font-weight: var(--bs-font-weight-bold, 700); }
.fw-bolder { font-weight: var(--bs-font-weight-bolder, 800); }

/* Font sizes */
.fs-small { font-size: var(--bs-body-font-size-sm, 0.875rem); }
.fs-base { font-size: var(--bs-body-font-size, 1rem); }
.fs-large { font-size: var(--bs-body-font-size-lg, 1.25rem); }

/* Line heights */
.lh-1 { line-height: var(--bs-line-height-condensed, 1); }
.lh-base { line-height: var(--bs-line-height-base, 1.5); }
.lh-lg { line-height: var(--bs-line-height-expanded, 2); }

/* Inline code */
:not(pre) > code {
    font-family: var(--bs-font-monospace, monospace);
    font-size: var(--bs-code-font-size, 1em);
}

/* Code blocks */
code, pre {
    font-family: var(--bs-font-monospace, monospace);
    font-size: var(--code-block-font-size, 1em);
    margin-bottom: var(--bs-paragraph-margin-bottom, 1rem) !important;
}

/* Border styles */
.border { border: 1px solid var(--bs-border-color) !important; }

/* Color rules */
.text-primary { color: var(--bs-primary) !important; }
.text-secondary { color: var(--bs-secondary) !important; }
.text-success { color: var(--bs-success) !important; }
.text-info { color: var(--bs-info) !important; }
.text-warning { color: var(--bs-warning) !important; }
.text-danger { color: var(--bs-danger) !important; }
.text-light { color: var(--bs-light) !important; }
.text-dark { color: var(--bs-dark) !important; }

/* Background rules */
.bg-primary { background-color: var(--bs-primary) !important; }
.bg-secondary { background-color: var(--bs-secondary) !important; }
.bg-success { background-color: var(--bs-success) !important; }
.bg-info { background-color: var(--bs-info) !important; }
.bg-warning { background-color: var(--bs-warning) !important; }
.bg-danger { background-color: var(--bs-danger) !important; }
.bg-light { background-color: var(--bs-light) !important; }
.bg-dark { background-color: var(--bs-dark) !important; }

/* Button rules */
.btn-primary {
    background-color: var(--bs-primary);
    border-color: var(--bs-primary);
}
.btn-primary:hover {
    background-color: rgb(var(--bs-primary-rgb));
    border-color: rgb(var(--bs-primary-rgb));
}

.btn-secondary {
    background-color: var(--bs-secondary);
    border-color: var(--bs-secondary);
}
.btn-secondary:hover {
    background-color: rgb(var(--bs-secondary-rgb));
    border-color: rgb(var(--bs-secondary-rgb));
}

.btn-success {
    background-color: var(--bs-success);
    border-color: var(--bs-success);
}
.btn-success:hover {
    background-color: rgb(var(--bs-success-rgb));
    border-color: rgb(var(--bs-success-rgb));
}

.btn-info {
    background-color: var(--bs-info);
    border-color: var(--bs-info);
}
.btn-info:hover {
    background-color: rgb(var(--bs-info-rgb));
    border-color: rgb(var(--bs-info-rgb));
}

.btn-warning {
    background-color: var(--bs-warning);
    border-color: var(--bs-warning);
}
.btn-warning:hover {
    background-color: rgb(var(--bs-warning-rgb));
    border-color: rgb(var(--bs-warning-rgb));
}

.btn-danger {
    background-color: var(--bs-danger);
    border-color: var(--bs-danger);
}
.btn-danger:hover {
    background-color: rgb(var(--bs-danger-rgb));
    border-color: rgb(var(--bs-danger-rgb));
}

.btn-light {
    background-color: var(--bs-light);
    border-color: var(--bs-light);
}
.btn-light:hover {
    background-color: rgb(var(--bs-light-rgb));
    border-color: rgb(var(--bs-light-rgb));
}

.btn-dark {
    background-color: var(--bs-dark);
    border-color: var(--bs-dark);
}
.btn-dark:hover {
    background-color: rgb(var(--bs-dark-rgb));
    border-color: rgb(var(--bs-dark-rgb));
}
